package proxy02;

import java.util.Date;

/**
 * 定义一个代理类,相当于老王的私人教练
 * 代理类主要完成需求:
 * 老王专注于吃饭,睡觉,玩游戏,私人教练专注于负责统计老王吃饭,睡觉,玩游戏需要的时间
 * 为了让代理类知道要对那些方法做时间统计,我们需要让代理类和被代理类实现相同接口
 * 类比:
 * 为了让私人教练知道对老王哪些行为做时间统计,我们需要让私人教练和老王实现相同的接口
 */
public class LaoWangProxy implements OneDay {
    private LaoWang lw;

    public LaoWangProxy(LaoWang lw){
        this.lw = lw;
    }


    @Override
    public void eat() {
        long startTime = new Date().getTime();

        lw.eat();

        long endTime = new Date().getTime();
        System.out.println("吃饭需要的时间:"+ (endTime-startTime));
    }

    @Override
    public void play() {
        long startTime = new Date().getTime();

        lw.play();

        long endTime = new Date().getTime();
        System.out.println("吃饭需要的时间:"+ (endTime-startTime));
    }

    @Override
    public void sleep() {
        long startTime = new Date().getTime();

        lw.sleep();

        long endTime = new Date().getTime();
        System.out.println("吃饭需要的时间:"+ (endTime-startTime));
    }
}
